﻿using System;

using Galaxy.ModuleInterface;

namespace Galaxy.Core
{
    /// <summary>Интерфейс ядра Галактики</summary>
    public interface IGalaxyCore
    {
        /// <summary>Событие запуска/остановки ядра</summary>
        event Events.OnEnableEventHandler OnEnable;

        /// <summary>Событие возникновения исключительной ситуации в ядре</summary>
        event Events.OnErrorEventHandler OnError;

        /// <summary>Добавить модуль</summary>
        /// <param name="Module">Добавляемый модуль</param>
        void AddModule(params IGalaxyModule[] Module);

        /// <summary>Удалить модуль</summary>
        /// <param name="Module">Удаляемый модуль</param>
        void RemoveModule(params IGalaxyModule[] Module);

        /// <summary>Запуск ядра</summary>
        void Start();

        /// <summary>Остановка ядра</summary>
        void Stop();
    }
}
